Titan Panel
Introduction Titan Panel is an interface add-on which creates a horizontal bar where many mini modules can be deployed displaying all sorts of useful, at-a-glance, game data. It's growing in popularity because of its good looks, simplicity and ease of creating plugins to be displayed in the panel. The latest version 2 supports a variety of diferent bar locations. It can be: # 1 bar at the top # 1 bar at the bottom # 1 bar at the top and 1 bar at the bottom # 2 bars at the top # 2 bars at the bottom News News on Version 2 Version 2.08 V1800 is out and located here (same place as before). By Adsertor, this is the third person working on this mod. This version supports horizontal bars (panels) on top and bottom of the screen. News on Version 1 "NOTE: Development has been discontinued, due to certain unforseen circumstances (translation: new job). If someone else wants to continue with the development, let me know ASAP. This edition of Titan Panel is exactly the same as the original (found here: http://www.curse-gaming.com/mod.php?addid=860 ) except with a few changes and bug fixes. As the author of Titan Panel hasn't been online latley, I'm going to update it for when he/she gets back. Titan Panel is not mine. Only the changes I made are mine. If the author is reading this, you are welcome to take this version back and submit it as your own." -- Dark Imakuni An updated version of Titan Panel can be found here: v1.3 or v1.27 by Dark Imakuni Curse does not seem to have the 1700 version up yet. Now updated for patch 1.7, you can get it here: Version 1.25.1600 by TitanMod. NOTE: Curse Gaming can be very busy sometimes, so keep trying. Titan Panel has been upgraded to work with patch 1.6 of World of Warcraft.... :-) Author *The author of Titan 2 addon is Adsertor @ UI.WWN. *The author of the Titan addon is TitanMod @ Curse (@ UI.WWN). *The author of some updates and bug fixes is Dark Imakuni @ Curse (@ UI.WWN). Version *Current version by Adsertor: 2.08 *Current version by Dark Imakuni: 1.27 or 1.3 *Last version by TitanMod: 1.25 URLs *v2.08 URL: http://ui.worldofwar.net/ui.php?id=1442 *v1.3 or v1.27 URL: http://www.curse-gaming.com/mod.php?addid=2142 *v1.2.5 (Out-of-Date) URL: http://www.curse-gaming.com/mod.php?addid=860 –OR– *v1.2.5 URL: http://ui.worldofwar.net/ui.php?id=576 Screenshots Titan 2: http://ui.worldofwar.net/images/ui/1129167028WoWScrnShot_101205_172526.jpg Included Titan Plugins Version 2 As of Version 2, Adsertor has added many Third Party plugins on the Core Distribution of Titan Panel. Everytime a new version of these plugins get released, a new version of Titan will be released as well (in theory). Version 1.X To get you started with the Titan Panel, the author has included several plugins with the framework release: * TitanAmmo - show ammo counts * TitanBag - show room left in bags * TitanClock - clock with offsets for your true timezone * TitanCoords - displays location, plus coordinates * TitanFPS - displays color coded FPS in the bar * TitanLatency - displays color coded latency in the bar * TitanHonor - displays your PvP stats * TitanMoney - displays money count * TitanXP - displays XP and tooltip with more information * TitanVolume - volume slider * TitanLootType - displays party loot settings * TitanMemory - displays memory usage * TitanUIScale - slider for scaling the Titan Panel and the overall UI elements Other Titan Plugins Sites Query UI.worldofwar.net for plugins. Faster than Curse, just not as "popular". Titan Plugin Listing maintained by Sepioth. This list is great but hasn't been updated since July 2005. Updated Titan Plugin Listing maintained by Zyph. This list is a continuation of the work that Sepioth began. Links to AddOns Here are some other Titan enabled plugins. All links go to Curse which is experiencing some growing pains due to excessive load. Tread lightly. * TitanDefense - tracks chatter in World Defense letting you know what's being attacked * TitanMail - tracks email status, including auction notices * TitanFriends - mini friends list * TitanGuild - a simple guild listing and interfaction plugin, in the spirit of TitanFriends * TitanQuests - quest viewer * TitanMadReagent - reagent tracking * InventoryHawk - another item tracker and a whole lot more (bags, money, etc.) * TitanRecap - display Recap add-on data in the panel (requires Recap) * TitanRegen - health and mana regen numbers * TitanFactions - factions and standing * TitanCombatInfo - combat info, ie: crit percentage, dodge * TitanModMenu - Provides a menu for many addons * WoWPlayer - A Winamp / ITunes / Foobar player controller + current track artist/title viewer * TitanBG - Battleground info and features Suggestions TitanMod has asked that any suggestions for the core Titan addon be posted here (below). Someone should try to contact Adsertor about Titan 2, since TitanMod seems to be inactive. Category: Community AddOns Multiple Lines I've seen this request in multiple forums, so thought I'd post over here. Titan Panel should automatically expand to multiple lines if needed in order to display all the buttons requested. :Ryessa 06:43, 7 Jul 2005 (EDT) SunderThis As a Warrior, I use an AddOn called SunderThis to track the number of Sunder Armors I have applied to a mob, as well as the time to expire the debuff. The display frame for this AddOn happens to normally be right above the Mob Health Status bar, which is now under TitanPanel. It would be -really- nice if this frame could be integrated into Titan. I'm going to look into how to do this, but I'm a newbie AddOn writer, and I'm hoping this would be trivial for someone who actually knows Titan and Lua well. :Tharas 5:04, 30 Jun 2005 (PDT) Variable Loading Because TitanPanel doesn't fire any kind of event, it is impossible to have any startup initialization in a plugin that relies on Titan variables being loaded. Instead, I've had to create an OnUpdate event that checks if the Titan variables are loaded yet, so that I can initialize my settings. (Yes, I know this is horrible.) What I'd like to propose is that once TitanPanel is done loading, it would walk through each plugin and call the function _OnTitanVariablesLoaded() if it exists. :Ryessa 04:49, 30 Jun 2005 (EDT) Hiding Once the Titan bar is Hidden it is not apparent how to make it visable again. --Mandingo 5/29/2005: If whoever posted this is referring to the "AutoHide" feature, just hover over the region (top or bottom based on your config) of the screen and the bar will reappear. Click the thumbtack again to tack it in place. Gamma I frequently have to adjust my Gamma setting, depending on where I am and what time of day it is (in-game and real-life). How about a little Gamma-adjustment icon like the Volume slider? That'd be very helpful to me. :--FeldmanSkitzoid 11:51, 1 Jun 2005 (EDT) : Great suggestion. I also find myself adjusting gamma. Especially before I got drapes for my office :) I'll be sure and pass this along. : Mandingo 16:13, 1 Jun 2005 (EDT) Developer's Guide If you want to create your own Titan panel plug-in, you should get the Titan Panel developer's kit for some simple examples. The general anatomy of a Titan panel button is fairly simple. There's the button itself, which is what appears on the Titan panel. These can be text, icons, comination text and icons, or other arbitrarily complex UI frames. Each button has a context menu, a tooltip and often a control window. You define the button in your XML as you might expect: ... TitanPanelExampleButton_OnLoad(); TitanPanelButton_OnLoad(); ... The button should have an OnLoad hook to set up the plug-in's details, and should call the original TitanPanelButton_OnLoad() function to insert itself into the Panel's list of known plug-ins. The template to inherit from depends on what sort of plug-in you wish to create: ; TitanPanelButtonTemplate : The basic template; has a right click menu, and default handlers for OnLoad, OnShow, OnClick, OnUpdate, OnEnter, and OnLeave, but no way to display anything. If you use this template, you must add child frames to do something. ; TitanPanelTextTemplate : A basic Titan panel button with a text string. Use this if you have no icon and nothing more complex than a text string to display. ; TitanPanelIconTemplate : A basic Titan panel button with an icon. Use this if you only have an icon. Titan panel buttons with just an icon will be displayed on the right side of the Titan panel. The registry entry icon determines the texture used, and iconWidth determines the icon's width. ; TitanPanelComboTemplate : A Titan panel button with both an icon and a text string. Use this when you want to display a text string with an optionally visible icon beside it. The Titan variable ShowIcon will determine if the icon appears, and the registry entry iconButtonWidth will determine the space reserved for the icon. Two other templates are available as an aid also, but should not be used as a top level Titan Panel button: ; TitanPanelChildButtonTemplate : A child button within a parent button template. Use this to add more than one button to a TitanPanelButtonTemplate instance; you should hook the OnClick event if you want your child buttons to exhibit different behaviour to the parent. ; TitanOptionsSliderTemplate : A template for vertical sliders to use in control windows. In your OnLoad method, before the TitanPanelButton_OnLoad() is called, you must set up the button's registry. This is a table defining how the button appears and works within the Panel, and has the following fields: ; id : A string ID for the plug-in. ; builtIn : Set to 1 to appear in built-ins menu. ; menuText : Label for plug-in toggle menu. ; buttonTextFunction : The name of a function to call to get the button text; should return up to four pairs of label, value. If only a single string is returned, it is always displayed. If a label and a value, or more than one label and value, are returned, the labels will only be displayed if the ShowLabelText variable is true. The labels and values aren't separated by Titan, so you should make sure your label text includes some separation (eg, return "Label: ", "value"). ; tooltipTitle : The title line for the plug-in's tooltip. ; tooltipTextFunction : The name of a function that should return text to display in the plug-in's tooltip, below the title line. ; tooltipCustomFunction : The name of a function to be called when the GameTooltip should be updated for this plug-in. ; icon : A texture name for this plug-in's icon. ; iconWidth : The width, in pixels, of the icon texture. The default width is 16 pixels. ; iconButtonWidth : The width, in pixels, of an icon or combo button. If the ShowIcon variable is true, this width will be added to a combo button and the icon displayed. Icon buttons will always show their icon; if this width is not set, the width of the icon will be used. ; savedVariables : A table of (key, default) data listing variables to save per-user for this plug-in. The variables can be accessed via TitanGetVar(id, key) and TitanSetVar(id, key, value). The variables ShowIcon and ShowLabelText are understood by Titan Panel. Default values of nil must use TITAN_NIL instead, since lua table values cannot be nil. ; frequency : The interval, in (floating point) seconds, between updates. When that interval (or more) has elapsed, either a button or tooltip update function, or both, will be called, according to updateType. ; updateType : One of TITAN_PANEL_UPDATE_TOOLTIP, TITAN_PANEL_UPDATE_BUTTON or TITAN_PANEL_UPDATE_ALL (default). Determines which update functions will be called every frequency seconds. You must at least supply the id and menuText entries, though usually you will want to supply more: function TitanPanelExamplePlugin_OnLoad() this.registry = { id = "Example", menuText = "Example Plug-in", tooltipTitle = "Example Plug-in", buttonTextFunction = "TitanPanelExamplePlugin_GetButtonText", }; end function TitanPanelExamplePlugin_GetButtonText() return "Example"; end With just this code, you should have a Titan Panel plug-in that simply shows "Example". If you want it to respond to left clicks, you need to either hook the OnClick event to do what you want, or create a frame called TitanPanel(ID)ControlFrame, where (ID) is your plug-in's id (eg, TitanPanelExampleControlFrame). This frame will be shown and hidden attached to your button when it is left clicked. If you want your button to respond to right clicks with a contextual menu, ensure that either you don't hook OnClick or that you call TitanPanelButton_OnClick(arg1) after doing your own work, so that the Titan code can catch the right click event. You will also need to define a function named TitanPanelRightClickMenu_Prepare(ID)Menu, calling a combination of the right click menu construction functions: ; TitanPanelRightClickMenu_AddTitle(text, level?) : Adds the given text as a right click menu title. level, if set, will determine the menu nesting level. ; TitanPanelRightClickMenu_AddSpacer(level?) : Adds a padding space to the right click menu. level, if set, will determine the menu nesting level. ; TitanPanelRightClickMenu_AddToggleIcon(id) : Adds an icon toggle option to the right click menu. ; TitanPanelRightClickMenu_AddToggleLabelText(id) : Adds a label text toggle option to the right click menu. ; TitanPanelRightClickMenu_AddToggleColoredText(id) : Adds a coloured text toggle option to the right click menu. ; TitanPanelRightClickMenu_AddCommand(text, value, funcname, level?) : Adds a callback function to the right click menu, with the given text label, argument and function name to call. Predefined functions are TITAN_PANEL_MENU_FUNC_HIDE, which should have a text of TITAN_PANEL_MENU_HIDE and a value of the plug-in ID to remove from the panel. ; TitanPanelRightClickMenu_AddToggleVar(text, id, var, toggleTable?) : Adds a toggle option with label text, for plug-in id's variable var. If toggleTable is present, it is a list of options, at least one of which must always be set. You can build a typical context menu easily: function TitanPanelRightClickMenu_PrepareExampleMenu() TitanPanelRightClickMenu_AddTitle(TitanPlugins"Example".menuText); TitanPanelRightClickMenu_AddToggleIcon("Example"); TitanPanelRightClickMenu_AddToggleLabelText("Example"); TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, "Example", TITAN_PANEL_MENU_FUNC_HIDE); end Note that the example plug-in's registry didn't include any variables, so these toggles won't work, and may even generate errors. On top of that, it neither has an icon nor returns a label from its GetButtonText method, so the toggles would have no effect even if the variables existed. Example only, cut and paste at your own risk! --Dhask 00:26, 13 Sep 2005 (EDT)